home *** CD-ROM | disk | FTP | other *** search
/ Pascal Super Library / Pascal Super Library (CW International)(1997).bin / BBS_UTL / RLNK120 / RIPDOOR.PAS < prev    next >
Pascal/Delphi Source File  |  1994-07-06  |  6KB  |  179 lines

  1. Program RIPDoor;
  2.  
  3. {$F+}
  4.  
  5. { RipDoor (RipDoor) - Copyright (C) 1994 by InterProgramming      }
  6. {                     All rights reserved.                        }
  7. { Version 1.20      - For distribution with RipLink.              }
  8. {                     FREE to all registered RipLink users.       }
  9.  
  10. { This is a sample program to show the use of RIPlink.  RIPlink is a }
  11. { standalone product and requires the use of a door toolkit.  This   }
  12. { example covers both using RIPlink and interfacing with a door      }
  13. { toolkit.                                                           }
  14.  
  15. { This sample makes reference to "DoorKit."  DoorKit is just a general }
  16. { reference to any door toolkit.                                       }
  17.  
  18. { This example displays a simple screen to the user composed of various      }
  19. { things that RIPscrip supports.  Then it will wait for a character and then }
  20. { display the RIP file, CITY.RIP.  We've provided CITY.RIP as a convenience  }
  21. { to you.                                                                    }
  22.  
  23.  
  24. uses
  25.   Dos, Crt, DoorKit, RIPlink;
  26.  
  27. Type
  28. {The RipLink Object - needed because we're overriding one procedure}
  29.   RIPtr = ^RIPObject;
  30.   RIPObject = object(RIPObj)
  31.     procedure sendstr(instr : string); virtual;
  32.     procedure sendstrcr(instr : string); virtual;
  33.   end;
  34.  
  35. Var
  36.   dummych       : char;
  37.   RIP           : RIPtr; {an instance of the object}
  38.  
  39. Procedure RIPObject.SendStr(instr : string);
  40. {give RipLink the command to send strings out the modem}
  41. begin
  42.   DisplayRemote(instr); {DisplayRemote is a DoorKit procedure that
  43.                                 sends strings over the modem without
  44.                                 displaying them locally.}
  45. end;
  46.  
  47. Procedure RIPObject.SendStrCR(instr : string);
  48. {give RipLink the command to send strings out the modem}
  49. begin
  50.   DisplayRemote(instr+#13#10); {DisplayRemote is a DoorKit procedure that
  51.                                 sends strings over the modem without
  52.                                 displaying them locally.}
  53. end;
  54.  
  55. Procedure StatusL;
  56. {Graphics procedure to override the DoorKit one}
  57. {This can be as extensive or simple as you want it to be.}
  58. var
  59.   tstr  : string[75];
  60. begin
  61.   tstr := UserName+', '+baud+', Time: '+inttostr(timeremaining);
  62.   RIP^.StatText := tstr;
  63.   RIP^.StatLine;
  64. end;
  65.  
  66. Procedure InitDoor;
  67. {initializes door}
  68. begin
  69.   RIP := nil;     {clears pointer (to object)}
  70.   ProcessParams;  {a DoorKit procedure}
  71.   ReadDoorFile;   {another DoorKit procedure}
  72.  
  73.   {RIPexist : boolean; : Does the user want RIP? (a DoorKit variable)}
  74.   if RIPexist then            {if user wants rip, initialize the object}
  75.     New(RIP,Init(DoRIP,''));  {DoRIP : boolean; : Do graphics LOCALLY?}
  76.  
  77.   initcomm; {DoorKit procedure}
  78.   if initfail then
  79.   begin
  80.     writeln('Error: Initializing Communications port.  Exiting.');
  81.     if RIP <> nil then      {this is important!}
  82.       Dispose(RIP, Done);
  83.     Closecomm; {DoorKit procedure}
  84.     Halt(1);
  85.   end;
  86.  
  87.   {IcnPath : pathstr; : Path of local icon files}
  88.   If RIP <> nil then
  89.     RIP^.IconDir := IcnPath;  {RIPlink must be told where the icons are}
  90.   if DoRIP and RIPexist then  {if the sysop wants Rip (DoRip) then assign the
  91.                                graphics stat line to the status proc}
  92.     StatProc := StatusL;
  93. end;
  94.  
  95. Procedure Header;
  96. const
  97.   test : fpt = (146,73,36,146,73,36,146,73);
  98.   t2   : fpt = (127,159,231,227,235,141,189,254);
  99. var
  100.   bla  : boolean;
  101. begin
  102.   if RIPexist then    {See comment below for line:
  103.                        if (not RIPexist) or (not DoRip) then}
  104.   begin
  105.     RIP^.RipResetWindows;
  106.       {good idea at beginning of every scene}
  107.     RIP^.RipSetPalette(0,1,2,3,4,5,7,20,56,57,58,59,60,61,62,63);
  108.       {define the color palette - this is the default setting}
  109.     RIP^.RipTextWindow(1,8,80,20,true,0);
  110.       {define a text window}
  111.     RIP^.RipButtonStyle(0,0,2,768,3,15,0,15,8,7,0,0,15,7);
  112.       {define a button style}
  113.     RIP^.RipWriteMode(0);
  114.       {set the write mode}
  115.     RIP^.RipColor(12);
  116.       {set the drawing color}
  117.     RIP^.RipLineStyle(0,0,3);
  118.       {set the line style}
  119.     RIP^.RipFontStyle(2,0,1);
  120.       {set the font type and style (Font 2)}
  121.     RIP^.RipTextXY(10,4,'InterProgramming');
  122.     RIP^.RipColor(14);
  123.     RIP^.RipTextXY(14,9,'InterProgramming');
  124.     RIP^.RipColor(11);
  125.     RIP^.RipTextXY(18,14,'InterProgramming');
  126.     RIP^.RipColor(10);
  127.     RIP^.RipTextXY(22,19,'InterProgramming');
  128.     RIP^.RipColor(13);
  129.     RIP^.RipTextXY(26,25,'InterProgramming');
  130.     RIP^.RipColor(12);
  131.     RIP^.RipLoadIcon(10,100,0,true,'computer.icn');
  132.     RIP^.RipPutImage(70,100,0);
  133.       {copy image from clipboard - happens to be icon because of last command}
  134.     RIP^.RipFillPattern(test,9);
  135.       {define a fill pattern - see const above}
  136.     RIP^.RipBar(250,100,450,150);
  137.     RIP^.RipFillPattern(t2,6);
  138.     RIP^.RipBar(250,175,450,250);
  139.     RIP^.RipButtonStyle(0,0,0,768,0,11,0,15,8,9,0,0,0,13);
  140.     RIP^.RipPixel(0,4);
  141.     RIP^.RipButton(50,180,200,260,0,0,'','Button','');
  142.     dummych := getch; {wait for a char; GetCh is a DoorKit function}
  143.  
  144.     RIP^.RipResetWindows; {reset everything again}
  145.     bla := RIP^.DisplayRIPfile('city.rip'); {display the RIP file CITY.RIP}
  146.     dummych := getch; {wait for a char}
  147.   end;
  148.   if (not RIPexist) or (not DoRip) then {This line and the line mentioned
  149.                                          above handle RIP/non-RIP callers.
  150.                                          Necessary to handle the sysop who
  151.                                          doesn't want RIP even when the user
  152.                                          does}
  153.   begin
  154.     clearscreen; {DoorKit proc}
  155.     colorset(12,0); {DoorKit proc}
  156.     displayln('InterProgramming'); {DoorKit proc}
  157.     colorset(14,0);
  158.     displayln(' InterProgramming');
  159.     colorset(11,0);
  160.     displayln('  InterProgramming');
  161.     colorset(10,0);
  162.     displayln('   InterProgramming');
  163.     colorset(13,0);
  164.     displayln('    InterProgramming');
  165.     displayln('');
  166.   end;
  167. end;
  168.  
  169. Begin               {main block}
  170.   {UnRegDelay := false;} {prompt for a random number when unregistered
  171.                           number will have to be entered locally}
  172.   UnRegDelay := true;    {delay for 10 seconds when unregistered}
  173.   InitDoor;
  174.   Header;
  175.   dummych := getch; {wait for a char}
  176.   if RIP <> nil then    {IMPORTANT!}
  177.     Dispose(RIP, Done);
  178. End.
  179.